package com.tjec.project.businessWorkbench.service;

import com.tjec.project.businessWorkbench.domain.BmsProjectDoc;
import com.tjec.project.businessWorkbench.domain.BmsProjectDocCatalog;
import com.tjec.project.businessWorkbench.dto.WholeDocQueryDto;
import com.tjec.project.businessWorkbench.vo.WholeDocQueryVo;

import java.util.ArrayList;
import java.util.List;

/**
 * 项目文档 Service接口
 * 
 * @author pangyongfeng
 * @date 2020-04-27
 */
public interface IBmsProjectDocService 
{
    /**
     * 查询项目文档 
     * 
     * @param guid 项目文档 ID
     * @return 项目文档 
     */
    public BmsProjectDoc selectBmsProjectDocByGuid(String guid);

    /**
     * 查询项目文档 列表
     * 
     * @param bmsProjectDoc 项目文档
     * @return 项目文档 集合
     */
    public void selectBmsProjectDocList(BmsProjectDoc bmsProjectDoc);
    
    /**
     * 查询项目文档 列表
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 项目文档 集合
     */
    public List<BmsProjectDoc> selectBmsProjectDocListByResult(BmsProjectDoc bmsProjectDoc);

    /**
     * 新增项目文档 
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 结果
     */
    public int insertBmsProjectDoc(BmsProjectDoc bmsProjectDoc);

    /**
     * 修改项目文档 
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 结果
     */
    public int updateBmsProjectDoc(BmsProjectDoc bmsProjectDoc);

    /**
     * 批量删除项目文档 
     * 
     * @param guids 需要删除的项目文档 ID
     * @return 结果
     * @throws Exception 
     */
    public int deleteBmsProjectDocByGuids(String[] guids) throws Exception;

    /**
     * 删除项目文档 信息
     * 
     * @param guid 项目文档 ID
     * @return 结果
     */
    public int deleteBmsProjectDocByGuid(String guid);
    
    /**
     * 文件移动
     * @param catalogId * @param catalogId 移动到的目录id
     * @param updateBy 更新人
     * @param guid 要移动的文件id集合
     * @return
     */
    public int moveBmsProjectDoc(String catalogId,String updateBy,ArrayList<String> guid);

    /**
     * 项目主页-文档查询
     * @param bmsProjectDoc 项目文档
     * @return
     */
    public List<BmsProjectDoc> selectBmsProjectDocQueryList(BmsProjectDoc bmsProjectDoc);

    /**
     * 解析文档查询参数
     * @param bmsProjectDoc
     */
    BmsProjectDoc parsingParamBmsProjectDoc(BmsProjectDoc bmsProjectDoc);

    public List<BmsProjectDoc> getDocByCatalogId(String catalogId);

    public List<BmsProjectDoc> selectAllProjectDocQueryList(BmsProjectDoc bmsProjectDoc);
    
    /**
     * 文档查询
     * @param wholeDocQueryVo
     * @return
     */
    public List<WholeDocQueryDto> wholeDocQuery(WholeDocQueryVo wholeDocQueryVo);

    /**
     * 获取项目文档数量
     * @param bmsProjectDoc
     * @return
     */
//    Integer countSelectAllProjectDocQueryList(BmsProjectDoc bmsProjectDoc);

    /**
     * 获取项目文档数量
     * @param bmsProjectDoc
     * @return
     */
    Integer countProjectDocCatalog(BmsProjectDoc bmsProjectDoc);

    /**
     * 获取项目文档子目录
     * @param bmsProjectDoc
     * @return
     */
    List<BmsProjectDocCatalog> getProjectDocCatalogChildren(BmsProjectDoc bmsProjectDoc);
}
